<template>
  <div style="height: 100%">
    <el-menu style="height: 100%" :default-active="activeIndex" mode="vertical" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" @select="handleSelect"
             :menu-trigger="'click'"	:collapse-transition=false :unique-opened=true :show-timeout=2000	:hide-timeout=2000 :collapse="isCollapse" v-if="subLevel == 1">
      <template v-for="(item,index) of list" >
        <el-submenu :index="item.index" v-if="item.children.length > 0" :key="index">
          <template slot="title">
            <i :class="item.icon"></i>
            <span>{{item.name}}</span>
          </template>
          <BroadsideMenu :list="item.children" :sub-level="item.index"></BroadsideMenu>   <!--递归调用-->
        </el-submenu>
        <el-menu-item :index="item.index"  v-else :key="index">
          <i :class="item.icon"></i>
          <span slot="title">{{item.name}}</span>
        </el-menu-item>
      </template>
    </el-menu>
    <template v-else>
      <template v-for="(item,index) of list" >
        <el-submenu :index="item.index" v-if="item.children.length > 0" :key="index">
          <template slot="title">
            <i :class="item.icon"></i>
            <span>{{item.name}}</span>
          </template>
          <BroadsideMenu :list="item.children" :sub-level="item.index"></BroadsideMenu>   <!--递归调用-->
        </el-submenu>
        <el-menu-item :index="item.index"  v-else :key="index">
          <i :class="item.icon"></i>
          <span slot="title">{{item.name}}</span>
        </el-menu-item>
      </template>
    </template>
  </div>
</template>

<script>
  export default {
    name: "BroadsideMenu",
    props:{
      /**
       String
       Number
       Boolean
       Function
       Object
       Array
       Symbol
       */
      list: {
        type: Array,
        required: true
      },
      isCollapse: {
        type: Boolean,
        default: false
      },
      subLevel: {
        type: Number,
        required: true
      }
    },
    data() {
      return {
        activeIndex: '1'
      }
    }, // 定义数据
    methods: {
      init() {

      },
      handleOpen(key, keyPath) {
        console.log(key, keyPath);
      },
      handleClose(key, keyPath) {
        console.log(key, keyPath);
      },
      handleSelect(key, keyPath) {
        console.log(key, keyPath);
        console.log(this.activeIndex)
        switch(key){
          case '1':
            this.$router.replace('/tableFile');
            break;
          case '2':
            this.$router.push('/Page2')
            break;
          case '3':
            this.$router.push('/Page3')
            break;
        }
      }
    }, // 定义方法
    filters: {},// 定义私有过滤器
    directives: {},// 定义私有指令
    components: { }, // 定义实例内部私有组件的

    beforeCreate() { },// 实例刚在内存中被创建出来，此时，还没有初始化好 data 和 methods 属性
    created() { }, //实例已经在内存中创建OK，此时 data 和 methods 已经创建OK，此时还没有开始 编译模板
    beforeMount() { },// 此时已经完成了模板的编译，但是还没有挂载到页面中
    mounted() { },// 此时，已经将编译好的模板，挂载到了页面指定的容器中显示
    beforeUpdate() { },// 状态更新之前执行此函数， 此时 data 中的状态值是最新的，但是界面上显示的 数据还是旧的，因为此时还没有开始重新渲染DOM节点
    updated() { },// 实例更新完毕之后调用此函数，此时 data 中的状态值 和 界面上显示的数据，都已经完成了更新，界面已经被重新渲染好了！
    beforeDestroy() { },// 实例销毁之前调用。在这一步，实例仍然完全可用。
    destroyed() { }, //Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，所有的事件监听器会被移除，所有的子实例也会被销毁。
  }
</script>

<style scoped>

</style>
